package br.ufrgs.engsoft.util;

import javax.servlet.http.HttpServletRequest;

import br.ufrgs.engsoft.entity.Autor;
import br.ufrgs.engsoft.entity.Referencia;

public class EntityUtil {
	private EntityUtil() {}

	public static Referencia getReferenciaFromRequest(HttpServletRequest request) {
		Referencia referencia = new Referencia();
		referencia.setId(integerConverter(request.getParameter(HtmlParameterEnum.REFERENCIA_ID.name())));
		referencia.setAutor(new Autor(integerConverter(request.getParameter(HtmlParameterEnum.AUTOR_ID.name()))));
		referencia.setTitulo(request.getParameter(HtmlParameterEnum.REFERENCIA_TITULO.name()));
		referencia.setAnoPublicacao(integerConverter(request.getParameter(HtmlParameterEnum.REFERENCIA_ANO_PUBLICACAO.name())));
		referencia.setSubtitulo(request.getParameter(HtmlParameterEnum.REFERENCIA_SUBTITULO.name()));
		referencia.setEdicao(request.getParameter(HtmlParameterEnum.REFERENCIA_EDICAO.name()));
		referencia.setLocalPublicacao(request.getParameter(HtmlParameterEnum.REFERENCIA_LOCAL_PUBLICACAO.name()));
		referencia.setEditora(request.getParameter(HtmlParameterEnum.REFERENCIA_EDITORA.name()));
		referencia.setNumeroPaginas(integerConverter(request.getParameter(HtmlParameterEnum.REFERENCIA_NUMERO_PAGINAS.name())));
		referencia.setNumeroVolumes(integerConverter(request.getParameter(HtmlParameterEnum.REFERENCIA_NUMERO_VOLUMES.name())));
		referencia.setSerie(integerConverter(request.getParameter(HtmlParameterEnum.REFERENCIA_SERIE.name())));
		return referencia;
	}
	
	private static Integer integerConverter(String param) {
		try {
			if (param==null || "".equals(param.trim())) return 0;
			return Integer.parseInt(param);
		} catch (NumberFormatException e) {
			throw new RuntimeException("Campos (num)ericos nao podem receber caracteres!");
		}
	}
}
